home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2001 May / SGI Freeware 2001 May - Disc 3.iso / dist / fw_apache.idb / usr / freeware / apache / include / multithread.h.z / multithread.h
C/C++ Source or Header  |  2001-01-10  |  2KB  |  70 lines

  1. #ifndef APACHE_MULTITHREAD_H
  2. #define APACHE_MULTITHREAD_H
  3.  
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. #define MULTI_OK (0)
  9. #define MULTI_TIMEOUT (1)
  10. #define MULTI_ERR (2)
  11.  
  12. typedef void mutex;
  13. typedef void semaphore;
  14. typedef void thread;
  15. typedef void event;
  16.  
  17. /*
  18.  * Ambarish: Need to do the right stuff on multi-threaded unix
  19.  * I believe this is terribly ugly
  20.  */
  21. #ifdef MULTITHREAD
  22. #ifdef NETWARE
  23. #define APACHE_TLS
  24. #else
  25. #define APACHE_TLS __declspec( thread )
  26. #endif
  27.  
  28. thread *create_thread(void (thread_fn) (void *thread_arg), void *thread_arg);
  29. int kill_thread(thread *thread_id);
  30. int await_thread(thread *thread_id, int sec_to_wait);
  31. void exit_thread(int status);
  32. void free_thread(thread *thread_id);
  33.  
  34. API_EXPORT(mutex *) ap_create_mutex(char *name);
  35. API_EXPORT(mutex *) ap_open_mutex(char *name);
  36. API_EXPORT(int) ap_acquire_mutex(mutex *mutex_id);
  37. API_EXPORT(int) ap_release_mutex(mutex *mutex_id);
  38. API_EXPORT(void) ap_destroy_mutex(mutex *mutex_id);
  39.  
  40. semaphore *create_semaphore(int initial);
  41. int acquire_semaphore(semaphore *semaphore_id);
  42. int release_semaphore(semaphore *semaphore_id);
  43. void destroy_semaphore(semaphore *semaphore_id);
  44.  
  45. event *create_event(int manual, int initial, char *name);
  46. event *open_event(char *name);
  47. int acquire_event(event *event_id);
  48. int set_event(event *event_id);
  49. int reset_event(event *event_id);
  50. void destroy_event(event *event_id);
  51.  
  52. #else /* ndef MULTITHREAD */
  53.  
  54. #define APACHE_TLS
  55. /* Only define the ones actually used, for now */
  56. extern void *ap_dummy_mutex;
  57.  
  58. #define ap_create_mutex(name)    ((mutex *)ap_dummy_mutex)
  59. #define ap_acquire_mutex(mutex_id)    ((int)MULTI_OK)
  60. #define ap_release_mutex(mutex_id)    ((int)MULTI_OK)
  61. #define ap_destroy_mutex(mutex_id)
  62.  
  63. #endif /* ndef MULTITHREAD */
  64.  
  65. #ifdef __cplusplus
  66. }
  67. #endif
  68.  
  69. #endif /* !APACHE_MULTITHREAD_H */
  70.